package com.mrjy.coursepackage.bo;

import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.mrjy.common.entity.CoursePackageCommentInfo;
import com.mrjy.common.entity.CoursePackageInfo;
import com.mrjy.coursepackage.dto.CoursePackageInfoDTO;
import com.mrjy.custom.dto.CustomModuleDto;

/**
 * 课程包基本信息 业务类 
 * @author csshui
 *
 */
public interface ICoursePackageInfoBo {
	/**
	 * 新增记录
	 * @param info
	 * @param session 
	 * @return
	 */
	public Object txInsert(CoursePackageInfoDTO info, HttpSession session);
	/**
	 * 全部修改，不管值是否为空
	 * @param info
	 * @return
	 */
	public Object txUpdate(CoursePackageInfo info);
	/**
	 * 只修改不为空的值
	 * @param info
	 * @param session 
	 * @return
	 */
	public Object txUpdateById(CoursePackageInfoDTO info, HttpSession session);
	
	public Object txDelete(Integer id);
	
	public Object selectById(Integer id);
	/**
	 * 通过id和类型来查询
	 * @param info info.id 课程包id  
	 * @return
	 */
	public Object selectTeacherPackageByIdAndType(CoursePackageInfo info);
	/**
	 * 通过id和类型来查询
     * @param info info.id 课程包id
     * @param session
     * @return
     */
    public Object selectThemePackageByIdAndType(CoursePackageInfo info, HttpSession session);

    /**
	 * 通过id查询视频标签
	 * @param id
	 * @return
	 */
	public Object selectVideoTypeById(Integer id);
	/**
	 * 主题课程包页 通过id查询导师的头像
	 * @param id
	 * @return
	 */
	public Object selectTeacherHeadImgById(Integer id);
	/**
	 * 通过用户id查询我的课程，里面包括了判断是否是会员的操作及相应的操作
	 * @param userId
	 * @return
	 */
	public Object selectMyCoursePackageByUserId(CoursePackageInfo info);
	/**
	 * 根据课程包类型查询 导师包列表或主题包列表
	 * @param info info.coursePackageType  0:主题课程包;1:导师课程包 ，info.page info.rows
	 * @return
	 */
	public Object selectPageByCoursePackageType(CoursePackageInfo info,Integer userId);
	/**
	 * 通过课程包id查询其包含的视频，支持分页查询
	 * @param info info.id , info.page, info.rows
	 * @return
	 */
    Object selectVideoListById(CoursePackageInfo info, HttpSession session);

    /**
     * 批量删除
	 * @param ids
	 * @return
	 */
	public Object txDeleteByIds(int[] ids);
	/**
	 * 更新disableFlag
	 * @param info
	 * @param session 
	 * @param session
	 * @return
	 */
	public Object txUpdateDisableFlag(CoursePackageInfo info, HttpSession session);
	/**
	 * 通过id和类型来查询
	 * @param info info.id 课程包id  
	 * @return
	 */
	public Object selectCoursePackageByIdAndType(CoursePackageInfo info);
	
	public Object selectPageByCoursePackageTypeForBack(CoursePackageInfoDTO info, HttpSession session);

	public Object queryAllThemePackage(Integer teacherId,Integer userId);
	public Object exportExl(CoursePackageInfoDTO info, HttpServletResponse response, HttpSession session);
	public Object queryByVideoType(CoursePackageInfoDTO info);

    Object queryAllTeacherPackage(Integer teacherId, HttpSession session);

    public Object queryTeacherPackageByUserId(Integer teacherId);

    public Object queryStageTabInfo();

    Object queryCourseByCustomModuleId(CoursePackageInfoDTO coursePackageInfoDTO);

    public Object queryBelongSpecialCP(Integer videoId);

    Object selectUnFinishVideoListById(CoursePackageInfo info);
	public Object queryPageByType(String types, Integer page, Integer rows, HttpSession session);
}
